package traveldreamEJB;

import java.io.Serializable;

import javax.persistence.*;

import java.util.List;


/**
 * The persistent class for the pagamento database table.
 * 
 */
@Entity
@Table(name="pagamento")
@NamedQueries({
@NamedQuery(name="Pagamento.findAll", query="SELECT p FROM Pagamento p"),
@NamedQuery(name="Pagamento.findMax", query="SELECT MAX(p.idPagamento) FROM Pagamento p"),
@NamedQuery(name="Pagamento.findIstanzePagateByViaggio", query="SELECT p.listaIstanze FROM Pagamento p WHERE p.viaggio.idViaggio=:idViaggio ")
})
public class Pagamento implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id 
	@Column(unique=true, nullable=false)
	private Integer idPagamento;

	@Column(nullable=false)
	private Integer totale;

	@ManyToMany
	@JoinTable(
			name="pagamento_has_istanza",
			 joinColumns ={
					@JoinColumn(name="Pagamento_idPagamento", referencedColumnName="idPagamento")
				} ,
			inverseJoinColumns ={
					@JoinColumn(name="Istanza_idIstanza", referencedColumnName="idIstanza")
						 
			})
	private List<Istanza> listaIstanze;

	//bi-directional many-to-one association to Utente
	@ManyToOne
	@JoinColumn(name="Utente_email", nullable=false)
	private Utente utente;

	//bi-directional many-to-one association to Viaggio
	@ManyToOne
	@JoinColumn(name="Viaggio_idViaggio", nullable=false)
	private Viaggio viaggio;

	public Pagamento() {
	}
	
	public Pagamento(Integer idPagamento, Integer totale, List<Istanza> istanze, Utente utente, Viaggio viaggio) {
		this.idPagamento = idPagamento;
		this.totale = totale;
		this.listaIstanze = istanze;
		this.utente = utente;
		this.viaggio = viaggio;
	}

	public Integer getIdPagamento() {
		return this.idPagamento;
	}

	public void setIdPagamento(Integer idPagamento) {
		this.idPagamento = idPagamento;
	}

	public Integer getTotale() {
		return this.totale;
	}

	public void setTotale(Integer totale) {
		this.totale = totale;
	}

	public List<Istanza> getListaIstanze() {
		return this.listaIstanze;
	}

	public void setListaIstanze(List<Istanza> listaIstanze) {
		this.listaIstanze = listaIstanze;
	}

	public Utente getUtente() {
		return this.utente;
	}

	public void setUtente(Utente utente) {
		this.utente = utente;
	}

	public Viaggio getViaggio() {
		return this.viaggio;
	}

	public void setViaggio(Viaggio viaggio) {
		this.viaggio = viaggio;
	}

}